home *** CD-ROM | disk | FTP | other *** search
Text File | 1996-08-20 | 11.5 KB | 312 lines | [TEXT/MPS ] |
- // Copyright © 1995 by Apple Computer, Inc. All rights reserved.
- // PCISlots.h
-
- /*
- FILE
- PCISlots.h
-
- NAME
- PCI Slot Peek interface file
-
- DESCRIPTION
- This header file contains definitions for the PCI Slot Peek application.
-
- MODIFICATION HISTORY
- Created by Terry Teague
-
- 24 Apr 95 - TRT - Initial version
- 17 Jul 95 - TRT - Tidy-up source for PPCC v1.0.5, Universal Headers v2.0 final,
- CodeWarrior 6.1. Add support for finding slot # given driver refNum.
-
- =============================================================================================
- */
-
- #ifndef __PCISLOTS__
- #define __PCISLOTS__
-
- #ifdef __cplusplus
- extern "C" {
- #endif
-
- #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
- #pragma options align=mac68k
- #endif
-
- #ifdef __CFM68K__
- #pragma lib_export on
- #endif
-
- //=============================================================================================
- // Constants
- //=============================================================================================
-
- #ifndef TRUE
- #define TRUE 1
- #define FALSE 0
- #endif
-
- // Printable characters from the ISO-Invariant character set.
-
- #define IS_ASCII_PRINT(c) ((c) >= ' ' && (c) <= '~')
-
- #define kOneLineFormatLength (80)
-
- // no native PPC code available Alert
- #define kNotPPCResourceID 27309
- #define kMac68KMsgID 1
- #define kPowerMacMsgID 2
-
- // STR# resources
- #define kSlotPropertySTRID 10000
- #define kSlotNamesPropertyName 1
- #define kSlotPropertyName 2
- #define kSlotPropertyValue 3
- #define kSlotDriverRefNumItem 4
-
- #define kPropertyNameSTRID 10001
- #define kDisplayPropertyValueSTRID 10002
-
- #define kMiscPCISTRID 10005
- #define kPCISlotsTitle 1
- #define kNoPCISlots 2
- #define kNoNameRegistryLib 3
- #define kNo68KNameRegistry 4
- #define kNoCardsInPCISlots 5
-
- // PEF container in resource
- #define kPEFResType 'XCOF'
- #define kPEFresourceID 10000
-
- // error codes returned by PPC native glue code setup function
- enum {
- glueNoErr = 0,
- glueNotPPCErr = 1,
- glueNoCFMorMMErr = 2,
- glueCFMPrepareErr = 3,
- glueFindSymbolErr = 4,
- glueNoGlueErr = 5
- };
-
-
- //=============================================================================================
- // Types
- //=============================================================================================
-
- typedef OSStatus (*RegistryEntryIterateCreateProcPtr) (RegEntryIter *cookie);
- typedef OSStatus (*RegistryEntryIterateDisposeProcPtr) (RegEntryIter *cookie);
- typedef OSStatus (*RegistryEntryIterateProcPtr) (RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done);
- typedef OSStatus (*RegistryEntryIDDisposeProcPtr) (RegEntryID *id);
- typedef OSStatus (*RegistryPropertyGetSizeProcPtr) (const RegEntryID *entryID, const RegPropertyName *propertyName, RegPropertyValueSize *propertySize);
- typedef OSStatus (*RegistryPropertyGetProcPtr) (const RegEntryID *entryID, const RegPropertyName *propertyName, void *propertyValue, RegPropertyValueSize *propertySize);
- typedef OSStatus (*RegistryEntryToPathSizeProcPtr) (const RegEntryID *entryID, RegPathNameSize *pathSize);
- typedef OSStatus (*RegistryCStrEntryToPathProcPtr) (const RegEntryID *entryID, RegCStrPathName *pathName, RegPathNameSize pathSize);
-
- #if GENERATINGCFM || USESROUTINEDESCRIPTORS
-
- typedef UniversalProcPtr RegistryEntryIterateCreateUPP;
- typedef UniversalProcPtr RegistryEntryIterateDisposeUPP;
- typedef UniversalProcPtr RegistryEntryIterateUPP;
- typedef UniversalProcPtr RegistryEntryIDDisposeUPP;
- typedef UniversalProcPtr RegistryPropertyGetSizeUPP;
- typedef UniversalProcPtr RegistryPropertyGetUPP;
- typedef UniversalProcPtr RegistryEntryToPathSizeUPP;
- typedef UniversalProcPtr RegistryCStrEntryToPathUPP;
-
- enum {
- uppRegistryEntryIterateCreateProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryIter *)))
- };
-
- enum {
- uppRegistryEntryIterateDisposeProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryIter *)))
- };
-
- enum {
- uppRegistryEntryIterateProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryIter *)))
- | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegEntryIterationOp)))
- | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(RegEntryID *)))
- | STACK_ROUTINE_PARAMETER (4, SIZE_CODE(sizeof(Boolean *)))
- };
-
- enum {
- uppRegistryEntryIDDisposeProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
- };
-
- enum {
- uppRegistryPropertyGetSizeProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
- | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegPropertyName *)))
- | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(RegPropertyValueSize *)))
- };
-
- enum {
- uppRegistryPropertyGetProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
- | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegPropertyName *)))
- | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(void *)))
- | STACK_ROUTINE_PARAMETER (4, SIZE_CODE(sizeof(RegPropertyValueSize *)))
- };
-
- enum {
- uppRegistryEntryToPathSizeProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
- | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegPathNameSize *)))
- };
-
- enum {
- uppRegistryCStrEntryToPathProcInfo = kCStackBased
- | RESULT_SIZE(SIZE_CODE(sizeof(OSStatus)))
- | STACK_ROUTINE_PARAMETER (1, SIZE_CODE(sizeof(RegEntryID *)))
- | STACK_ROUTINE_PARAMETER (2, SIZE_CODE(sizeof(RegCStrPathName *)))
- | STACK_ROUTINE_PARAMETER (3, SIZE_CODE(sizeof(RegPathNameSize)))
- };
-
- //#define CallEnumerateNameRegistry CallUniversalProc((UniversalProctPtr)(myEnumerateNameRegistryUPP), uppEnumerateNameRegistryProcInfo)
-
- #else
-
- typedef RegistryEntryIterateCreateProcPtr RegistryEntryIterateCreateUPP;
- typedef RegistryEntryIterateDisposeProcPtr RegistryEntryIterateDisposeUPP;
- typedef RegistryEntryIterateProcPtr RegistryEntryIterateUPP;
- typedef RegistryEntryIDDisposeProcPtr RegistryEntryIDDisposeUPP;
- typedef RegistryPropertyGetSizeProcPtr RegistryPropertyGetSizeUPP;
- typedef RegistryPropertyGetProcPtr RegistryPropertyGetUPP;
- typedef RegistryEntryToPathSizeProcPtr RegistryEntryToPathSizeUPP;
- typedef RegistryCStrEntryToPathProcPtr RegistryCStrEntryToPathUPP;
-
- //#define CallEnumerateNameRegistry (*myEnumerateNameRegistryUPP)()
-
- #endif
-
- //=============================================================================================
- // Global variables
- //=============================================================================================
-
- #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
-
- // PPC native code only
-
- #else
-
- // 68K only
-
- extern RegistryEntryIterateCreateUPP myRegistryEntryIterateCreateUPP;
- extern RegistryEntryIterateDisposeUPP myRegistryEntryIterateDisposeUPP;
- extern RegistryEntryIterateUPP myRegistryEntryIterateUPP;
- extern RegistryEntryIDDisposeUPP myRegistryEntryIDDisposeUPP;
- extern RegistryPropertyGetSizeUPP myRegistryPropertyGetSizeUPP;
- extern RegistryPropertyGetUPP myRegistryPropertyGetUPP;
- extern RegistryEntryToPathSizeUPP myRegistryEntryToPathSizeUPP;
- extern RegistryCStrEntryToPathUPP myRegistryCStrEntryToPathUPP;
-
- #endif
-
- //=============================================================================================
- // Macros
- //=============================================================================================
-
- // This is the magic that makes it all work
- // Native PPC code just makes calls to native PPC library functions
- // 68K calls the 68K->PPC glue code
-
- #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
-
- // PPC native code only
-
- #define myRegistryEntryIterateCreate(a) RegistryEntryIterateCreate(a)
- #define myRegistryEntryIterateDispose(a) RegistryEntryIterateDispose(a)
- #define myRegistryEntryIterate(a, b, c, d) RegistryEntryIterate(a, b, c, d)
- #define myRegistryEntryIDDispose(a) RegistryEntryIDDispose(a)
- #define myRegistryPropertyGetSize(a, b, c) RegistryPropertyGetSize(a, b, c)
- #define myRegistryPropertyGet(a, b, c, d) RegistryPropertyGet(a, b, c, d)
- #define myRegistryEntryToPathSize(a, b) RegistryEntryToPathSize(a, b)
- #define myRegistryCStrEntryToPath(a, b, c) RegistryCStrEntryToPath(a, b, c)
-
- #else
-
- // 68K code only
-
- // Jump to the routine descriptor. Here is the magic that calls the PPC code
-
- #define myRegistryEntryIterateCreate(a) (*(RegistryEntryIterateCreateUPP)myRegistryEntryIterateCreateUPP)(a)
- #define myRegistryEntryIterateDispose(a) (*(RegistryEntryIterateDisposeUPP)myRegistryEntryIterateDisposeUPP)(a)
- #define myRegistryEntryIterate(a, b, c, d) (*(RegistryEntryIterateUPP)myRegistryEntryIterateUPP)(a, b, c, d)
- #define myRegistryEntryIDDispose(a) (*(RegistryEntryIDDisposeUPP)myRegistryEntryIDDisposeUPP)(a)
- #define myRegistryPropertyGetSize(a, b, c) (*(RegistryPropertyGetSizeUPP)myRegistryPropertyGetSizeUPP)(a, b, c)
- #define myRegistryPropertyGet(a, b, c, d) (*(RegistryPropertyGetUPP)myRegistryPropertyGetUPP)(a, b, c, d)
- #define myRegistryEntryToPathSize(a, b) (*(RegistryEntryToPathSizeUPP)myRegistryEntryToPathSizeUPP)(a, b)
- #define myRegistryCStrEntryToPath(a, b, c) (*(RegistryCStrEntryToPathUPP)myRegistryCStrEntryToPathUPP)(a, b, c)
-
- #endif
-
- //=============================================================================================
- // Functions
- //=============================================================================================
-
- #if 0
- extern OSStatus myRegistryEntryIterateCreate(RegEntryIter *cookie);
- extern OSStatus myRegistryEntryIterateDispose(RegEntryIter *cookie);
- extern OSStatus myRegistryEntryIterate(RegEntryIter *cookie, RegEntryIterationOp relationship, RegEntryID *foundEntry, Boolean *done);
- extern OSStatus myRegistryEntryIDDispose(RegEntryID *id);
- extern OSStatus myRegistryPropertyGetSize(const RegEntryID *entryID, const RegPropertyName *propertyName, RegPropertyValueSize *propertySize);
- extern OSStatus myRegistryPropertyGet(const RegEntryID *entryID, const RegPropertyName *propertyName, void *propertyValue, RegPropertyValueSize *propertySize);
- extern OSStatus myRegistryEntryToPathSize(const RegEntryID *entryID, RegPathNameSize *pathSize);
- extern OSStatus myRegistryCStrEntryToPath(const RegEntryID *entryID, RegCStrPathName *pathName, RegPathNameSize pathSize);
- #endif
-
- // in PCISlotsUtils.cp
-
- extern Boolean FormatStringProperty(RegPropertyValueSize propertySize, const void *propertyValue, char *formatStr, char *result);
-
- extern Boolean FormatSmallProperty(RegPropertyValueSize propertySize, const void *propertyValue, char *formatStr, char *result);
-
- extern void EnumeratePropertiesForThisName(RegEntryID *entryID, const RegCStrPathName *pathName);
-
- extern OSErr GetSlotForThisName(RegEntryID *entryID, const RegCStrPathName *pathName);
-
- extern short EnumerateNameRegistry(void);
-
- extern short GetSlotForThisRefNum(short refNum);
-
- //extern void InitNativeNameRegistry(void);
-
- // in PCISlots.cp
-
- #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
-
- #else
-
- // I suppose I could have implemented these as macros, and for native PPC code
- // they would be dummies that did nothing
-
- extern OSErr SetupPPCNativeCode(CFragConnectionID *connID, Handle *PEFHandle);
-
- extern void TearDownPPCNativeCode(CFragConnectionID connID, Handle PEFHandle);
-
- #endif
-
- #ifdef __CFM68K__
- #pragma lib_export off
- #endif
-
- #if GENERATINGPOWERPC || defined(powerc) || defined (__powerc)
- #pragma options align=reset
- #endif
-
- #ifdef __cplusplus
- }
- #endif
-
- #endif
-
-